// pages/profilePage/profilePage.js
const user = require('../../services/user.js');
const util = require('../../utils/util.js');
const api = require('../../config/api.js');

Page({
  data: {
    tabbarActive: 4,
    userInfo: null,
    isLoggedIn: false,
    userLevel: 'lv.-',
    userPoints: '--',
    showClubPopup: false,
    selectedTicketType: 'single-day' // 默认选择整票
  },

  onLoad: function (options) {
    // 页面加载时的逻辑
    console.log('ProfilePage页面加载')
    this.checkLoginStatus();
  },

  onReady: function () {
    // 页面初次渲染完成
  },

  onShow: function () {
    // 页面显示时检查登录状态
    this.checkLoginStatus();
    
    // 更新tabbar选中状态
    this.setData({
      tabbarActive: 4
    })

    // 检查是否从登录页面返回
    this.checkLoginReturn();
    
    // 刷新用户信息
    this.loadUserInfo();
  },

  onHide: function () {
    // 页面隐藏
  },

  onUnload: function () {
    // 页面卸载
  },

  onPullDownRefresh: function () {
    // 下拉刷新
    this.checkLoginStatus();
    // 刷新用户信息
    this.loadUserInfo();
    wx.stopPullDownRefresh();
  },

  onReachBottom: function () {
    // 页面上拉触底事件的处理函数
  },

  onShareAppMessage: function () {
    // 用户点击右上角分享
    return {
      title: 'ProfilePage',
      path: '/pages/profilePage/profilePage'
    }
  },

  // 检查登录状态
  checkLoginStatus: function() {
    const userInfo = wx.getStorageSync('userInfo');
    const token = wx.getStorageSync('token');
    
    if (userInfo && token) {
      this.setData({
        userInfo: userInfo,
        isLoggedIn: true,
        userLevel: userInfo.level || 'lv.1',
        userPoints: userInfo.points || '0'
      });
    } else {
      this.setData({
        userInfo: null,
        isLoggedIn: false,
        userLevel: 'lv.-',
        userPoints: '--'
      });
    }
  },

  // 加载用户信息
  loadUserInfo: function () {
    const that = this;

    // 先检查登录状态
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，获取用户信息
        that.getUserInfo();
      },
      () => {
        // 用户未登录，不获取用户信息
        console.log("用户未登录，跳过获取用户信息");
      }
    );
  },

  // 获取用户信息
  getUserInfo: function () {
    const that = this;

    // 调用API获取用户信息
    util
      .request(api.UserInfo, {}, "POST")
      .then(function (res) {
        console.log("用户信息API响应:", res);

        // 标准化响应数据
        const normalizedRes = util.normalizeApiResponse(res);
        console.log("标准化后的响应:", normalizedRes);

        if (normalizedRes.success) {
          // 处理用户信息数据
          let userInfo = null;

          if (normalizedRes.data) {
            // 如果返回的是用户信息对象
            if (normalizedRes.data.userInfo) {
              userInfo = normalizedRes.data.userInfo;
            } else if (normalizedRes.data.id || normalizedRes.data.userId) {
              // 如果返回的就是用户信息对象
              userInfo = normalizedRes.data;
            }
          }

          // 更新用户信息
          if (userInfo) {
            // 更新本地存储
            wx.setStorageSync('userInfo', userInfo);
            
            // 更新页面数据
            that.setData({
              userInfo: userInfo,
              isLoggedIn: true,
              userLevel: userInfo.level || 'lv.1',
              userPoints: userInfo.points || '0'
            });
            console.log("用户信息刷新成功:", userInfo);
          } else {
            console.warn("用户信息数据格式异常:", normalizedRes.data);
          }
        } else {
          console.error("获取用户信息失败:", normalizedRes.message);
          // 获取用户信息失败不影响页面显示，只记录错误
        }
      })
      .catch(function (err) {
        console.error("获取用户信息失败:", err);
        // 获取用户信息失败不影响页面显示，只记录错误
      });
  },

  // 点击登录
  onLoginClick: function() {
    if (this.data.isLoggedIn) {
      // 已登录，显示用户信息
      wx.showToast({
        title: '已登录',
        icon: 'none'
      });
      return;
    }

    // 使用工具函数进行登录校验
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，更新页面状态
        this.checkLoginStatus();
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });
      },
      '查看个人资料需要先登录，是否立即登录？',
      '/pages/profilePage/profilePage'
    );
  },


  // 编辑个人资料
  onEditProfile: function() {
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，执行编辑操作
        wx.showToast({
          title: '编辑个人资料',
          icon: 'none'
        })
        // 这里可以跳转到编辑页面
        // wx.navigateTo({
        //   url: '/pages/editProfile/editProfile'
        // })
      },
      '编辑个人资料需要先登录，是否立即登录？',
      '/pages/profilePage/profilePage'
    );
  },

  // 俱乐部点击
  onClubClick: function() {
    console.log('俱乐部点击');
    
    // 检查登录状态
    const userInfo = this.data.userInfo;
    
    // 如果用户已登录且 isAudit 不为 0，则跳转到审核结果页面
    if (userInfo && userInfo.isAudit !== null && userInfo.isAudit !== undefined && userInfo.isAudit !== 0) {
      console.log('用户有审核记录，跳转到审核结果页面，isAudit:', userInfo.isAudit);
      wx.navigateTo({
        url: '/pages/clubVerifyResult/clubVerifyResult',
        success: function() {
          console.log('跳转到俱乐部审核结果页面成功');
        },
        fail: function(err) {
          console.error('跳转到俱乐部审核结果页面失败:', err);
          wx.showToast({
            title: '页面跳转失败',
            icon: 'none',
            duration: 2000
          });
        }
      });
      return;
    }
    
    // 否则显示弹窗
    console.log('显示俱乐部弹窗');
    this.setData({
      showClubPopup: true
    });
  },

  // 关闭俱乐部弹窗
  onCloseClubPopup: function() {
    console.log('关闭俱乐部弹窗');
    this.setData({
      showClubPopup: false
    });
  },

  // 选择票类型
  selectTicketType: function(e) {
    const type = e.currentTarget.dataset.type;
    console.log('选择票类型:', type);
    
    this.setData({
      selectedTicketType: type
    });

    // 根据类型跳转到对应页面
    if (type === 'single-day') {
      this.onJoinClub();
    } else if (type === 'multi-day') {
      this.onViewClubVerify();
    }
  },

  // 查看/验证俱乐部
  onViewClubVerify: function() {
    console.log('查看俱乐部验证');
    // 关闭弹窗
    this.setData({
      showClubPopup: false
    });
    
    // 使用工具函数进行登录校验
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，跳转到俱乐部验证页面
        wx.navigateTo({
          url: '/pages/clubVerify/clubVerify',
          success: function() {
            console.log('跳转到俱乐部验证页面成功');
          },
          fail: function(err) {
            console.error('跳转到俱乐部验证页面失败:', err);
            wx.showToast({
              title: '页面跳转失败',
              icon: 'none',
              duration: 2000
            });
          }
        });
      },
      '查看俱乐部验证需要先登录，是否立即登录？',
      '/pages/profilePage/profilePage'
    );
  },

  // 加入俱乐部
  onJoinClub: function() {
    console.log('加入俱乐部');
    // 关闭弹窗
    this.setData({
      showClubPopup: false
    });
    
    // 使用工具函数进行登录校验
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，跳转到加入俱乐部页面
        wx.navigateTo({
          url: '/pages/clubJoin/clubJoin',
          success: function() {
            console.log('跳转到加入俱乐部页面成功');
          },
          fail: function(err) {
            console.error('跳转到加入俱乐部页面失败:', err);
            wx.showToast({
              title: '页面跳转失败',
              icon: 'none',
              duration: 2000
            });
          }
        });
      },
      '加入俱乐部需要先登录，是否立即登录？',
      '/pages/profilePage/profilePage'
    );
  },

  // 查看俱乐部信息
  onViewClubInfo: function() {
    console.log('查看俱乐部信息');
    // 关闭弹窗
    this.setData({
      showClubPopup: false
    });
    
    wx.showToast({
      title: '俱乐部介绍功能开发中',
      icon: 'none'
    });
    // 这里可以跳转到俱乐部介绍页面
    // wx.navigateTo({
    //   url: '/pages/clubInfo/clubInfo'
    // })
  },

  // 编辑徽章
  onEditBadges: function() {
    // 添加加载提示
    wx.showLoading({
      title: '加载中...',
      mask: true
    });
    
    wx.navigateTo({
      url: '/pages/badges/badges',
      success: function() {
        console.log('跳转到徽章页面成功');
        wx.hideLoading();
      },
      fail: function(err) {
        console.error('跳转到徽章页面失败:', err);
        wx.hideLoading();
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none',
          duration: 2000
        });
      }
    });
  },

  // 我的发布
  onMyPosts: function() {
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，跳转到我的发布页面
        wx.navigateTo({
          url: '/pages/myPosts/myPosts',
          success: function() {
            console.log('跳转到我的发布页面成功');
          },
          fail: function(err) {
            console.error('跳转到我的发布页面失败:', err);
            wx.showToast({
              title: '页面跳转失败',
              icon: 'none',
              duration: 2000
            });
          }
        });
      },
      '查看我的发布需要先登录，是否立即登录？',
      '/pages/profilePage/profilePage'
    );
  },

  // 我的订单
  onMyOrders: function() {
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，执行操作
        wx.showToast({
          title: "正在加速开发中，敬请期待",
          icon: "none"
        });
        // 这里可以跳转到我的订单页面
        // wx.navigateTo({
        //   url: '/pages/myOrders/myOrders'
        // })
      },
      '查看我的订单需要先登录，是否立即登录？',
      '/pages/profilePage/profilePage'
    );
  },

  // 我的收藏
  onMyFavorites: function() {
    util.executeWithLoginCheck(
      () => {
        // 用户已登录，跳转到我的收藏页面
        wx.navigateTo({
          url: '/pages/myFavorites/myFavorites',
          success: function() {
            console.log('跳转到我的收藏页面成功');
          },
          fail: function(err) {
            console.error('跳转到我的收藏页面失败:', err);
            wx.showToast({
              title: '页面跳转失败',
              icon: 'none',
              duration: 2000
            });
          }
        });
      },
      '查看我的收藏需要先登录，是否立即登录？',
      '/pages/profilePage/profilePage'
    );
  },

  // 联系我们
  onContactUs: function() {
    // 添加加载提示
    wx.showLoading({
      title: '加载中...',
      mask: true
    });
    
    wx.navigateTo({
      url: '/pages/contactUs/contactUs',
      success: function() {
        console.log('跳转到联系我们页面成功');
        wx.hideLoading();
      },
      fail: function(err) {
        console.error('跳转到联系我们页面失败:', err);
        wx.hideLoading();
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none',
          duration: 2000
        });
      }
    });
  },

  // 关于我们
  onAboutUs: function() {
    // 添加加载提示
    wx.showLoading({
      title: '加载中...',
      mask: true
    });
    
    wx.navigateTo({
      url: '/pages/aboutUs/aboutUs',
      success: function() {
        console.log('跳转到关于我们页面成功');
        wx.hideLoading();
      },
      fail: function(err) {
        console.error('跳转到关于我们页面失败:', err);
        wx.hideLoading();
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none',
          duration: 2000
        });
      }
    });
  },

  // 检查是否从登录页面返回
  checkLoginReturn: function() {
    const userInfo = wx.getStorageSync('userInfo');
    const token = wx.getStorageSync('token');
    const navUrl = wx.getStorageSync('navUrl');

    // 如果用户已登录且当前页面是目标页面，则显示成功提示
    if (userInfo && token && navUrl === '/pages/profilePage/profilePage') {
      console.log('用户登录成功返回ProfilePage');
      // 清除导航URL
      wx.removeStorageSync('navUrl');
      // 更新页面状态
      this.checkLoginStatus();
      // 显示登录成功提示
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      });
    }
  }
})
